package com.adk.backend.service;

import com.adk.backend.entity.LxAdminFile;
import com.adk.backend.entity.LxAdminFlag;
import com.adk.backend.entity.LxAdminGroup;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 权限服务接口
 */
public interface PermissionService {
    
    /**
     * 根据用户组ID获取用户组信息
     */
    LxAdminGroup getGroupById(Integer groupId);
    
    /**
     * 获取用户的所有菜单权限
     */
    List<LxAdminFile> getUserMenus(Integer userType);
    
    /**
     * 获取用户的所有操作权限
     */
    List<LxAdminFlag> getUserFlags(Integer userType);
    
    /**
     * 获取用户的所有权限标识（flag_act）集合
     */
    Set<String> getUserFlagActs(Integer userType);
    
    /**
     * 检查用户是否有某个操作权限
     */
    boolean hasPermission(Integer userType, String flagAct);
    
    /**
     * 检查用户是否有某个菜单权限
     */
    boolean hasMenuPermission(Integer userType, Integer fileId);
    
    /**
     * 获取用户的完整权限信息（用于前端）
     */
    Map<String, Object> getUserPermissions(Integer userType);
    
    /**
     * 获取所有用户组列表
     */
    List<LxAdminGroup> getAllGroups();
    
    /**
     * 获取所有菜单文件
     */
    List<LxAdminFile> getAllFiles();
    
    /**
     * 获取所有权限标志
     */
    List<LxAdminFlag> getAllFlags();
    
    /**
     * 保存用户组
     */
    boolean saveGroup(LxAdminGroup group);
    
    /**
     * 删除用户组
     */
    boolean deleteGroup(Integer id);
}

